package main

import (
	"bytes"
	"log"
	"os/exec"
)

const (
	dhcpPath = "/opt/cni/bin/dhcp"
	dhcpSock = "/run/cni/dhcp.sock"
)

func main() {
	cmd := exec.Command(dhcpPath, "daemon")
	stdout := &bytes.Buffer{}
	cmd.Stdout = stdout
	cmd.Stderr = stdout
	// 与cmd.Run()不同, 使用cmd.Start()执行目标进程, 不会阻塞.
	// 而且可以脱离控制台, 关闭后, 通过cmd.Start()启动的进程依然可以存在.
	// 但是这就类似于js, cmd.Start()启动后会立即返回, 执行失败没有err, 也没有stdout.
	// 我是说这里的stdout, 如果把stdout绑定到某个文件, 应该是可以看到输出信息的.
	// 这算是唯一的不足了.
	err := cmd.Start()
	// err := cmd.Run()
	if err != nil {
		log.Println(err)
	}
	log.Println(stdout.String())
	return
}

/*
dhcp    4556 root    0r      CHR                1,3      0t0    9218 /dev/null
dhcp    4556 root    1w     FIFO                0,9      0t0  375933 pipe
dhcp    4556 root    2w     FIFO                0,9      0t0  375933 pipe
*/
